package com.kgcx.common.client.schedule.pojo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.sql.Timestamp;

/**
 * @author 袁进勇
 *
 */
@Data
@ApiModel(description = "派单记录")
public class ScheduleRecord {
    /**
     * 101-待派单
     */
    public static final Integer STATUS_PENDING = 101;

    /**
     * 102-预派单
     */
    public static final Integer STATUS_SCHEDULING = 102;

    /**
     * 103-已派单
     */
    public static final Integer STATUS_SCHEDULED = 103;

    /**
     * 104-待推送
     */
    public static final Integer STATUS_NOTIFYING = 104;

    /**
     * 105-已推送
     */
    public static final Integer STATUS_NOTIFIED = 105;

    /**
     * 106-已结束
     */
    public static final Integer STATUS_FINISHED = 106;

    /**
     * 107-已取消
     */
    public static final Integer STATUS_CANCELLED = 107;

    /**
     * 108-待工作人员处理的预约单状态
     */
    public static final Integer STATUS_HAND = 108;

    /**
     * 109-派单失败
     */
    public static final Integer STATUS_FAILED = 109;

    /**
     * 城市ID，默认0表示全国
     */
    @ApiModelProperty(position = 0, value = "城市ID", readOnly = true, example = "4301")
    private Long city_id;
    /**
     * 接机机场ID
     */
    @ApiModelProperty(position = 1, value = "机场ID", readOnly = true, example = "1")
    private Long airport_id;
    /**
     * 接站高铁站ID
     */
    @ApiModelProperty(position = 2, value = "高铁站ID", readOnly = true, example = "1")
    private Long station_id;
    /**
     * 订单号
     */
    @ApiModelProperty(position = 3, value = "订单号", required = true, example = "512638885752314148")
    private String order_no;
    /**
     * 订单类型，1-立即接机，2-立即接站，3-预约接机，4-预约接站，5-预约送机，6-预约送站，7-预约用车，8-立即用车
     */
    @ApiModelProperty(position = 4, value = "订单类型，1-立即接机，2-立即接站，3-预约接机，4-预约接站，5-预约送机，6-预约送站，7-预约用车，8-立即用车", readOnly = true, allowableValues = "1,2,3,4,5,6,7,8", example = "1")
    private Integer order_type;
    /**
     * 用车类型，1-公务轿车，2-豪华型，3-商务七座
     */
    @ApiModelProperty(position = 5, value = "用车类型，1-公务轿车，2-豪华型，3-商务七座", readOnly = true, allowableValues = "1,2,3", example = "1")
    private Integer auto_type;
    /**
     * 下单渠道，1-小程序，2-管理后台，3-iOS，4-安卓
     */
    @ApiModelProperty(position = 6, value = "下单渠道，1-小程序，2-管理后台，3-iOS，4-安卓", readOnly = true, allowableValues = "1,2,3,4", example = "1")
    private Integer order_channel;
    /**
     * 下单人ID
     */
    @ApiModelProperty(position = 7, value = "下单人ID", readOnly = true, example = "1")
    private Long placing_user_id;
    /**
     * 下单人电话
     */
    @ApiModelProperty(position = 8, value = "下单人电话", readOnly = true, example = "13712345678")
    private String placing_user_phone;
    /**
     * 乘车人ID
     */
    @ApiModelProperty(position = 9, value = "乘车人ID", readOnly = true, example = "1")
    private Long passenger_id;
    /**
     * 乘车人电话
     */
    @ApiModelProperty(position = 10, value = "乘车人电话", readOnly = true, example = "13712345678")
    private String passenger_phone;
    /**
     * 是否短信通知乘车人，1-是，2-否
     */
    @ApiModelProperty(position = 10, value = "是否短信通知乘车人，1-是，2-否", readOnly = true, allowableValues = "1,2", example = "2")
    private Integer is_msg_passenger;
    /**
     * 计划出发时间
     */
    @ApiModelProperty(position = 11, value = "计划出发时间", readOnly = true, example = "2017-12-11T10:13:00+08:00")
    private Timestamp plan_depart_time;
    /**
     * 预估价格
     */
    @ApiModelProperty(position = 12, value = "预估价格", readOnly = true, example = "100")
    private Integer plan_price;
    /**
     * 计划出发地城市ID
     */
    @ApiModelProperty(position = 13, value = "计划出发地城市ID", readOnly = true, example = "4301")
    private Long plan_orig_city_id;
    /**
     * 计划出发地
     */
    @ApiModelProperty(position = 14, value = "计划出发地", readOnly = true, example = "中电软件园二期")
    private String plan_orig;
    /**
     * 计划出发地经度
     */
    @ApiModelProperty(position = 15, value = "计划出发地经度", readOnly = true, example = "112.881063")
    private String plan_orig_lng;
    /**
     * 计划出发地纬度
     */
    @ApiModelProperty(position = 16, value = "计划出发地纬度", readOnly = true, example = "28.226991")
    private String plan_orig_lat;
    /**
     * 计划目的地城市ID
     */
    @ApiModelProperty(position = 17, value = "计划目的地城市ID", readOnly = true, example = "4301")
    private Long plan_dest_city_id;
    /**
     * 计划目的地
     */
    @ApiModelProperty(position = 18, value = "计划目的地", readOnly = true, example = "莱茵城B区")
    private String plan_dest;
    /**
     * 计划目的地经度
     */
    @ApiModelProperty(position = 19, value = "计划目的地经度", readOnly = true, example = "112.911587")
    private String plan_dest_lng;
    /**
     * 计划目的地纬度
     */
    @ApiModelProperty(position = 20, value = "计划目的地纬度", readOnly = true, example = "28.227686")
    private String plan_dest_lat;
    /**
     * 预估行驶总里程
     */
    @ApiModelProperty(position = 21, value = "预估行驶总里程", readOnly = true, example = "4000")
    private Long plan_mileage;
    /**
     * 预估行驶时长
     */
    @ApiModelProperty(position = 22, value = "预估行驶时长", readOnly = true, example = "300")
    private Long plan_duration;
    /**
     * 实际结束时间，用于延时解锁司机
     */
    @ApiModelProperty(position = 23, value = "行程结束时间", readOnly = true, example = "2017-12-11T18:19:00+08:00")
    private Timestamp actual_finish_time;
    /**
     * 是否需要定时任务调度：1-是，2-否
     */
    @ApiModelProperty(position = 24, value = "是否需要定时任务调度：1-是，2-否", readOnly = true, allowableValues = "1,2", example = "1")
    private Integer schedule_task;
    /**
     * 派单轮次
     */
    @ApiModelProperty(position = 25, value = "派单轮次", readOnly = true, example = "1")
    private Integer schedule_count;
    /**
     * 首次派单时间
     */
    @ApiModelProperty(position = 26, value = "首次派单时间", readOnly = true, example = "2017-12-11T10:14:00+08:00")
    private Timestamp fisrt_schedule_time;
    /**
     * 最近派单时间
     */
    @ApiModelProperty(position = 27, value = "最后派单时间", readOnly = true, example = "2017-12-11T10:14:30+08:00")
    private Timestamp latest_schedule_time;
    /**
     * 车辆ID
     */
    @ApiModelProperty(position = 28, value = "车辆ID", readOnly = true, example = "1")
    private Long auto_id;
    /**
     * 车牌号
     */
    @ApiModelProperty(position = 29, value = "车牌号", readOnly = true, example = "湘A·2H36L")
    private String auto_no;
    /**
     * 司机ID
     */
    @ApiModelProperty(position = 30, value = "司机ID", required = true, example = "1")
    private Long driver_id;
    /**
     * 司机姓名
     */
    @ApiModelProperty(position = 31, value = "司机姓名", readOnly = true, example = "张三")
    private String driver_name;
    /**
     * 司机电话
     */
    @ApiModelProperty(position = 32, value = "司机电话", readOnly = true, example = "13787654321")
    private String driver_phone;
    /**
     * 司机预计到达时间，调派场外车辆时，会预估出司机到达乘客始发地的时间
     */
    @ApiModelProperty(position = 33, value = "司机预计到达时间", readOnly = true, example = "2017-12-11T12:16:30+08:00")
    private Timestamp driver_arrive_time;
    /**
     * 推送司机信息给乘客的时间
     */
    @ApiModelProperty(position = 34, value = "推送司机信息给乘客的时间", readOnly = true, example = "2017-12-11T10:46:30+08:00")
    private Timestamp notify_passenger_time;
    /**
     * 派单异常错误码
     */
    @ApiModelProperty(position = 35, value = "派单异常错误码", readOnly = true, example = "16102000001")
    private Long schedule_error_code;
    /**
     * 派单异常信息
     */
    @ApiModelProperty(position = 36, value = "派单异常信息", readOnly = true, example = "异常堆栈")
    private String schedule_error_msg;
    /**
     * 派单状态，101-待派单，102-预派单，103-已派单，104-待推送，105-已推送，106-已结束，107-已取消，108-派单失败
     */
    @ApiModelProperty(position = 37, value = "派单状态，101-待派单，102-预派单，103-已派单，104-待推送，105-已推送，106-已结束，107-已取消，108-派单失败", readOnly = true, allowableValues = "101,102,103,104,105,106,107,108", example = "1")
    private Integer schedule_status;
    /**
     * 记录创建时间
     */
    @ApiModelProperty(position = 38, value = "记录创建时间", readOnly = true, example = "2017-12-11T10:08:10+08:00")
    private Timestamp create_time;
    /**
     * 存档时间，即移入历史表的时间
     */
    @ApiModelProperty(position = 39, value = "存档时间", readOnly = true, example = "2017-12-11T19:08:10+08:00")
    private Timestamp archive_time;

}
